import java.util.Arrays;
import java.util.Random;
/*
定义一个长度为[16][16]的整型二维数组并随机生成所有位置的元素值(1~100)，分别实现二维数组每行元素的累加和及每列元素的累加和并打印。
再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。
 */
public class Test1 {
    public static  void  main(String[] rags){
        //定义一个长度为[16][16]的整型二维数组
        int[][] arr=new int[16][16];
        //创建生成随机数的类
        Random random=new Random();

        //为二位数组随机生成所有位置的元素值(1~100)
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                arr[i][j]=(random.nextInt(100))+1;//随机生成1~100的随机数
            }
        }
        //遍历二位数组
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                if(arr[i][j]>=0&&arr[i][j]<10){
                    System.out.print("    "+arr[i][j]);
                }else if(arr[i][j]>=10&&arr[i][j]<100){
                    System.out.print("   "+arr[i][j]);
                }
               else {
                    System.out.print("  "+arr[i][j]);
                }

            }
            System.out.println();
        }


        //实现二维数组每行元素的累加
        System.out.println("----------------------------------------------------------");
        System.out.println("实现二维数组每行元素的累加");
        int rowSum[] =new int[16];//创建一个用接收每行的累加的数组
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
               rowSum[i]+=arr[i][j];//实现二维数组每行元素的累加
            }
        }
        //遍历每行的总和的值
        for (int i=0;i<rowSum.length;i++){
            System.out.println("第"+(i+1)+"行的总合为"+rowSum[i]);
        }

        //实现二维数组每列元素的累加
        System.out.println("----------------------------------------------------------");
        System.out.println("实现二维数组每列元素的累加");
        int columnSum[] =new int[16];//创建一个用接收每列的累加的数组
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                columnSum[i]+=arr[j][i];//实现二维数组每列元素的累加
            }
        }
        //遍历每列的总和的值
        for (int i=0;i<rowSum.length;i++){
            System.out.println("第"+(i+1)+"列的总合为"+columnSum[i]);
        }


        //实现二维数组中左上角到右下角
        System.out.println("----------------------------------------------------------");
        System.out.println("实现二维数组中左上角到右下角");
        int leftDiagonalSum = 0;
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                if (i==j){//因为左上角到右下角的每个元素在数组中i的值和j的值相等
                    leftDiagonalSum+=arr[i][j];//遍历左上角到右下角的每个元素
                    System.out.println(arr[i][j]);
                }
            }
        }
        System.out.println("二维数组中左上角到右下角总和为"+leftDiagonalSum);


        //实现二维数组中右上角到左下角
        System.out.println("----------------------------------------------------------");
        System.out.println("实现二维数组中右上角到左下角");
        int rightDiagonalSum = 0;
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                if ((i+j)==arr.length-1){//因为右上角到左下角的每个元素在数组中i加上j的值等于数组的长度减一
                    rightDiagonalSum+=arr[i][j];
                    System.out.println(arr[i][j]);//遍历右上角到左下角的每个元素
                }
            }
        }
        System.out.println("二维数组中右上角到左下角总和为"+rightDiagonalSum);
    }


}
